package com.legal.aid.app.mapper;

import com.legal.aid.app.domain.dto.CollectDto;
import com.legal.aid.app.domain.vo.CollectVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface AppCollectMapper {

    /**
     * 检查收藏状态 (只检查未删除的)
     */
    CollectVo checkCollectStatus(@Param("targetType") String targetType, @Param("targetId") Long targetId, @Param("userId") Long userId);

    /**
     * 检查任何收藏状态 (包括逻辑删除的)
     */
    CollectVo checkAnyCollectStatus(@Param("targetType") String targetType, @Param("targetId") Long targetId, @Param("userId") Long userId);

    /**
     * 添加收藏
     */
    int addCollect(CollectDto collectDto);

    /**
     * 取消收藏
     */
    int deleteCollect(@Param("targetType") String targetType, @Param("targetId") Long targetId, @Param("userId") Long userId, @Param("updatedBy") String updatedBy);

    /**
     * 恢复收藏 (针对已逻辑删除的记录)
     */
    int recoverCollect(@Param("targetType") String targetType, @Param("targetId") Long targetId, @Param("userId") Long userId, @Param("updatedBy") String updatedBy);

    /**
     * 获取用户收藏的目标ID列表
     */
    List<Long> getTargetIdList(@Param("targetType") String targetType, @Param("userId") Long userId);
}
